package it.cursos.escolalivre.modelo;

import java.util.ArrayList;
import java.util.List;

public class Horario {
	private Hora inicio;
	private Hora fim;
	private List<DiaDaSemana> diasDaSemana = new ArrayList<DiaDaSemana>();
	public static final Horario HORARIO_PADRAO_NOITE = new Horario(1);
	public static final Horario HORARIO_PADRAO_NOITE2 = new Horario(4);
	public static final Horario HORARIO_PADRAO_TARDE = new Horario(2);
	public static final Horario HORATIO_PADRAO_TARDE2 = new Horario(5);
	public static final Horario HORARIO_PADRAO_SABADO = new Horario(3);

	public Horario() {
		inicio = new Hora(0, 0);
		fim = new Hora(0, 0);
	}

	private Horario(int configuracaoHorario) {
		switch (configuracaoHorario) {
		case 1: // HORARIO_PADRAO_NOITE
			inicio = new Hora(19, 0);
			fim = new Hora(22, 0);
			diasDaSemana.add(DiaDaSemana.SEGUNDA_FEIRA);
			diasDaSemana.add(DiaDaSemana.QUARTA_FEIRA);
			diasDaSemana.add(DiaDaSemana.SEXTA_FEIRA);
			break;
		case 2: // HORARIO_PADRAO_TARDE
			inicio = new Hora(14, 40);
			fim = new Hora(17, 40);
			diasDaSemana.add(DiaDaSemana.SEGUNDA_FEIRA);
			diasDaSemana.add(DiaDaSemana.QUARTA_FEIRA);
			diasDaSemana.add(DiaDaSemana.SEXTA_FEIRA);
			break;
		case 3: // HORARIO_PADRAO_SABADO
			inicio = new Hora(8, 20);
			fim = new Hora(16, 20);
			diasDaSemana.add(DiaDaSemana.SABADO);
			break;
		case 4: // HORARIO_PADRAO_NOITE2
			inicio = new Hora(19, 0);
			fim = new Hora(22, 0);
			diasDaSemana.add(DiaDaSemana.TERCA_FEIRA);
			diasDaSemana.add(DiaDaSemana.QUINTA_FEIRA);
			break;
		case 5: // HORARIO_PADRAO_TARDE2
			inicio = new Hora(14, 40);
			fim = new Hora(17, 40);
			diasDaSemana.add(DiaDaSemana.TERCA_FEIRA);
			diasDaSemana.add(DiaDaSemana.QUINTA_FEIRA);
			break;
		default:
			break;
		}
	}

	@Override
	public String toString() {
		return "[" + diasDaSemana + ", " + inicio + "-" + fim + "]";
	}

	public Hora getInicio() {
		return inicio;
	}

	public void setInicio(Hora inicio) {
		this.inicio = inicio;
	}

	public Hora getFim() {
		return fim;
	}

	public void setFim(Hora fim) {
		this.fim = fim;
	}

	public List<DiaDaSemana> getDiasDaSemana() {
		return diasDaSemana;
	}

	public void setDiasDaSemana(List<DiaDaSemana> diasDaSemana) {
		this.diasDaSemana = diasDaSemana;
	}

}
